<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
  <script src="../lib/vue.js"></script>
  <script src="../lib/vue-route.js"></script>

  <style>
    /* router默认 */
    .router-link-active {
      font-weight: 800;
      font-style: italic;
      font-size: 80px;
    }

    /* 自定义 */
    .myactive {
      color: blue;
      font-weight: 800;
      font-style: italic;
      font-size: 80px;
    }

    .v-enter,
    .v-leave-to {
      opacity: 0;
      transform: translateX(140px);
    }

    .v-enter-active,
    .v-leave-active {
      transition: all 0.5s ease;
    }
  </style>
</head>

<body>
  <div id="app">
    <!-- <a href="#/login">登录</a>
    <a href="#/register">注册</a> -->

    <!-- route-link 默认渲染为一个a标签 -->
    <router-link to="/login" tag="span">登录</router-link>
    <router-link to="/register">注册</router-link>
    
    <transition mode='out-in'>
      <router-view/>
    </transition>
    
  </div>

  <script>
    //组件的模板对象
    var login = {
      template: '<h1>登录组件</h1>'
    }
    var register = {
      template: '<h1>注册组件</h1>'
    }

    // 创建一个路由对象，当导入vue-router包之后，在window全局对象中，就有一个路由的构造函数，叫做VueRouter
    // 在new 路由对象的时候，可以为构造函数，传递一个对象
    var routerObj = new VueRouter({
      //route //这个配置对象中的route表示【路由匹配规则的】的意思
      routes:[
        // 路由匹配规则
        //属性1是path，表示监听 哪个路由链接地址；
        //属性2是component，表示如果，路由时前面匹配到的path，则展示component属性对应的那个组件
        {
          path: '/login',
          // 注意：component的属性值，必须是一个组件模板对象，不能是组件引用名称
          component: login
        }, {
          path: '/register',
          component: register
        }, {
          path: '/',
          redirect: '/login'
        }
      ], 
      // 自定义选中样式
      linkActiveClass: 'myactive'
    })

    // 创建Vue实例，得到ViewModel
    var vm = new Vue({
      el: '#app',
      data: {},
      methods: {},
      router: routerObj //将路由规则对象，注册到vm实例上，用来监听URL地址的变化，然后展示对应的组件
    });
  </script>
</body>

</html>